import config from '@/config.js'

// 设置全局配置
uni.$u.http.setConfig((cfg) => {
    cfg.baseURL = config.BASE_URL
    cfg.timeout = 8000
    cfg.header = {
        'Content-Type': 'application/json'
    }
    return cfg
})

// 请求拦截
uni.$u.http.interceptors.request.use((cfg) => {
    const token = uni.getStorageSync('token')
    if (token) {
        cfg.header['Authorization'] = 'Bearer ' + token
    }
    // 动态切换 baseURL
    if (cfg.custom && cfg.custom.baseURL) {
        cfg.baseURL = cfg.custom.baseURL
    }
    return cfg
}, (cfg) => {
    return Promise.reject(cfg)
})

// 响应拦截
uni.$u.http.interceptors.response.use((res) => {
    if (res.config?.responseType === 'blob') {
        return res // ⬅️ 遇到流文件时直接返回原始响应
    }
    res = res.data
    if (res.code === "200") {
        return res.data
    } else if (res.code === "501") {
        uni.removeStorageSync('token')
        uni.$u.toast('登录已过期，请重新登录')
        setTimeout(() => {
            uni.reLaunch({url: '/pages/login/index'})
        }, 1500)
        return false
    } else {
        uni.$u.toast(res.message || '请求失败')
        return false
    }
}, (err) => {
    console.error('请求出错：', err)
    if (err.statusCode === 401) {
        uni.removeStorageSync('token')
        uni.$u.toast('登录已过期，请重新登录')
        setTimeout(() => {
            uni.reLaunch({url: '/pages/login/index'})
        }, 1500)
        return false
    }
    uni.$u.toast('网络错误，请检查网络')
    return false
})

export default uni.$u.http
